#include "Servidor.h"

Servidor::Servidor(char* ruta){
	this->archivo xmlParseFile(ruta);
	if(archivo==NULL) this->archivo = xmlNewDoc("<root><Personas></Personas><Perfiles></Perfiles><Grupos></Grupos><Dispositivos></Dispositivos></root>");  //mmm
	this->ruta = ruta;
	levantarXML();
}

Servidor::~Servidor(){
	xmlSaveFileEnc(this->ruta, this->archivo, "UTF-8");
}

void levantarXML(){

}

void Servidor::agregarConexion(int tipo, char* host, int port){
	int id = Servidor.id++;
	Conexion* actual;
	switch(tipo){
	case CONEXION_LDAP: actual = new ConexionLDAP(id,host,port);
						break;
	}
	if(actual) conexiones.agregar(actual);
}

void Servidor::quitarConexion(int id){
	Nodo<Conexion*>* aux = conexiones.getPrimero();
	while(aux){
		if(aux->getDato()->getId() == id){
			conexiones.removerDato(aux->getDato());
			aux = NULL;
		}else{
			aux = aux->getSiguiente();
		}
	}
}

void Servidor::agregarOperacion(Encolable* encolable){
	Nodo<Conexion*>* aux = conexiones.getPrimero();
	while(aux){
		aux->getDato()->getTareas().push(encolable);
		aux = aux->getSiguiente();
	}
}

void operacionPersona(Persona* persona){

	agregarOperacion(persona);
}

void operacionPerfil(Perfil* perfil){

	agregarOperacion(perfil);
}

void operacionGrupo(Grupo* grupo){


	agregarOperacion(grupo);
}
